from demo_02飞机大战.plane_sprites import *
import pygame

# 如果程序需要处理很多图像，都要先加载在使用screen对象的blit方法绘制，太繁琐
# 精灵Sprite对象 存储图像数据image、位置rect
# 精灵组包含多个精灵组，调用update方法其内部所有精灵调用自己的update方法修改位置
# 精灵对象的使用需要派生子类

pygame.init()
screen = pygame.display.set_mode((480, 700))
bg = pygame.image.load("images/background.png")
screen.blit(bg, (0, 0))

hero_rect = pygame.Rect(200, 500, 102, 126)
hero = pygame.image.load("images/me1.png")
screen.blit(hero, hero_rect)

pygame.display.update()

# 创建精灵
enemy1 = GameSprite("images/enemy1.png")
enemy2 = GameSprite("images/enemy1.png", 2)
# 创建精灵组并添加创建的精灵
sprite_group = pygame.sprite.Group(enemy1, enemy2)

clock = pygame.time.Clock()
while True:
    clock.tick(60)
    # 更新画布
    screen.blit(bg, (0, 0))
    # 更新敌机位置，之前先获取坐标，再重复赋值
    sprite_group.update()
    # 绘制精灵组中所有敌机，之前先加载图片再调用screen的blit方法绘制
    sprite_group.draw(screen)

    # 重新绘制英雄飞机
    hero_rect.y -= 3
    if hero_rect.y < -hero_rect.height:
        hero_rect.y = bg.get_rect().height
    screen.blit(hero, hero_rect)

    pygame.display.update()
    click_list = pygame.event.get()
    for event in click_list:
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()
